#ifndef FENETRECLIENT_H
#define FENETRECLIENT_H

#include <QtGui>

class ClientBase;

#include "ClientBase.h"
#include "MonWidgetQuestionQCM.h"


class FenetreClient : public QMainWindow
{
    Q_OBJECT

protected:
    QMenu *menuFichier; // La barre de menu.
    QToolBar *toolBarFichier; // La barre d'outils.
    QWidget *mainWidget; // le corps.
    QHBoxLayout *mainLayout; // layout du corps.
    QStatusBar *barreEtat; // La barre d'état.

    /* La console à gauche. */
    QWidget *widgetGauche;
    QVBoxLayout *layoutGauche;
    //QTextEdit *console;
    // QCM.
    QWidget *mainWidgetQCM;
    QLayout *mainLayoutQCM;
    QScrollArea *mainScrollAreaQCM;
    QVBoxLayout *scrollAreaVLayout;
    QWidget * scrollAreaWidgetContents;
    QList<QWidget*> listeQCM;

    /* Le menu de droite. */
    QWidget widgetDroit;
    QVBoxLayout *layoutDroit;
    QFormLayout layoutConnexion;
    QLabel etat;
    QLineEdit ip;
    QLineEdit port;
    QLineEdit nick;
    QPushButton boutonConnexion;

    QLabel labelListeSalles;
    QTreeView listeSalles;
    QStringListModel modeleListeSalles;
    QLabel labelListeActivites;
    QTreeView listeActivites;
    QStringListModel modeleListeActivites;

    // chat
    QLabel *ZoneChatAvecEtuLabel;
    QWidget *widgetChat;
    QGridLayout * layoutChat;
    QPushButton *BoutonEnvoyerMessage;
    QLineEdit *ZoneDechatLineEdit;
    QTextEdit *ZoneDeChatTextEdit;

    QTextEdit console2;

    ClientBase *clientBase; // Le client reseau.
    bool connecte; // etat de connexion du client.

    char* idSalleChoisie;
    char* idActiviteChoisie;

public:
    FenetreClient();
    std::string getLogin();
    void ecrireConsole2(std::string message);
    void ecrireConsole2(QString message);
    void ecrireConsole2(const char *message);
    void seConnecter();
    void seDeconnecter(QString);
    void ecrireMessageChat(QString message);

    // Gestion de l'activiteé QCM.
    void ajouterQuestionQCM(const QString& question, const QStringList& reponses);
    void viderQuestionsQCM();

protected slots:
    void onClick_connexion();
    void onClick_envoyerMessageChat();
    void onClick_salle(QModelIndex);
    void onClick_activite(QModelIndex);

public slots:
    void etatConnecte();
    void etatDeconnecte(QString);
    void remplirListeSalles(QStringList liste);
    void remplirListeActivites(QStringList liste);
    void viderListeSalles();
    void viderListeActivites();
    void lancerActivite(int);
    void arreterActivite(int);
    void nouvelleQuestionQCM(QString, QStringList);
    void validerQuestionQCM(QStringList);
};

#endif // FENETRECLIENT_H
